package main

import "fmt"
//数组是纯粹的值传递
func main() {
	var a=[3] int {1,2,3}
	//var b=a; //值传递，赋值数据结构
	var b=&a  //指针，复制引用
	b[1]++
	fmt.Println(a,b)
}
/*Go语言中有4个类型比较特别，看起来像引用类型，如下所示。
 数组切片：指向数组（array）的一个区间。
 map：极其常见的数据结构，提供键值查询能力。
 channel：执行体（goroutine）间的通信设施。
 接口（interface）：对一组满足某个契约的类型的抽象。*/
//数组切片本质
// 一个区间,数组切片内部是只指向数组的指针。数组切片类型本身的赋值是值语义
type slice struct{
	first *T
	len int
	cap int
}
//map是指针
type map[K]V struct {
impl *Map_K_V
}
//channel 也是指针